Aggregation Operators (match, group, project, sort) এর ব্যবহার

Java Technologies - জাভা মঙ্গোডিবি (Java MongoDB) - Aggregation Framework
139

MongoDB তে Aggregation Framework এমন একটি শক্তিশালী টুল যা ডেটা প্রসেসিং এবং পরিসংখ্যান বিশ্লেষণ করতে ব্যবহৃত হয়। এটি ডেটা থেকে নির্দিষ্ট ইনফরমেশন একত্রিত এবং বিশ্লেষণ করার জন্য বিভিন্ন অপারেটর সরবরাহ করে, যেমন $match, $group, $project, এবং $sort। এই অপারেটরগুলির মাধ্যমে MongoDB তে জটিল কুয়েরি এবং বিশ্লেষণ সহজ হয়।

Aggregation Operators:

  1. $match:
    • $match অপারেটর MongoDB তে ডেটার মধ্যে ফিল্টার করার জন্য ব্যবহৃত হয়। এটি SQL এর WHERE ক্লজের মতো কাজ করে এবং ডেটার মধ্যে নির্দিষ্ট শর্তে মেলানো ডকুমেন্টগুলি বের করে।
  2. $group:
    • $group অপারেটর MongoDB তে ডেটা গ্রুপ করতে ব্যবহৃত হয়। এটি SQL এর GROUP BY ক্লজের মতো কাজ করে এবং গ্রুপবাই অপারেশন চালানোর মাধ্যমে ডেটা বিশ্লেষণ করে।
  3. $project:
    • $project অপারেটর MongoDB তে নির্বাচিত ফিল্ডগুলো দেখানোর জন্য ব্যবহৃত হয়। এটি SQL এর SELECT ক্লজের মতো কাজ করে, যেখানে আপনি ডেটার কোন ফিল্ডগুলি দেখতে চান তা নির্দিষ্ট করতে পারেন।
  4. $sort:
    • $sort অপারেটর MongoDB তে ডেটা সাজানোর জন্য ব্যবহৃত হয়। এটি SQL এর ORDER BY ক্লজের মতো কাজ করে এবং ডেটা এক বা একাধিক ফিল্ডের মাধ্যমে সাজানো যায়।

Aggregation Operators এর উদাহরণ:

1. $match - ডেটা ফিল্টার করা

$match অপারেটর ব্যবহার করে MongoDB তে ডেটা ফিল্টার করা হয়। এটি সিলেক্টেড শর্তের সাথে মেলানো ডকুমেন্টগুলো নির্বাচন করে।

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.AggregateIterable;
import org.bson.Document;
import java.util.Arrays;

public class MongoDBMatchExample {
    public static void main(String[] args) {
        MongoClient mongoClient = new MongoClient("localhost", 27017);
        MongoDatabase database = mongoClient.getDatabase("myDatabase");
        MongoCollection<Document> collection = database.getCollection("users");

        // Match stage to filter users who are above the age of 30
        AggregateIterable<Document> result = collection.aggregate(Arrays.asList(
            new Document("$match", new Document("age", new Document("$gt", 30)))
        ));

        // Print the matching documents
        for (Document doc : result) {
            System.out.println(doc.toJson());
        }

        mongoClient.close();
    }
}

ব্যাখ্যা:

  • এখানে $match অপারেটর ব্যবহার করা হয়েছে যাতে age > 30 ডকুমেন্টগুলো ফিল্টার করা যায়।

2. $group - ডেটা গ্রুপ করা

$group অপারেটর ব্যবহার করে MongoDB তে ডেটা গ্রুপ করা হয়। এটি aggregate ফাংশনে ব্যবহার করা হয় যেখানে আপনি group by ফিল্ড এবং aggregation functions যেমন sum, avg, count ইত্যাদি ব্যবহার করতে পারেন।

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.AggregateIterable;
import org.bson.Document;
import java.util.Arrays;

public class MongoDBGroupExample {
    public static void main(String[] args) {
        MongoClient mongoClient = new MongoClient("localhost", 27017);
        MongoDatabase database = mongoClient.getDatabase("myDatabase");
        MongoCollection<Document> collection = database.getCollection("users");

        // Group stage to group by 'age' and calculate the count
        AggregateIterable<Document> result = collection.aggregate(Arrays.asList(
            new Document("$group", new Document("_id", "$age").append("count", new Document("$sum", 1)))
        ));

        // Print the grouped documents
        for (Document doc : result) {
            System.out.println(doc.toJson());
        }

        mongoClient.close();
    }
}

ব্যাখ্যা:

  • এখানে $group অপারেটর ব্যবহার করে age ফিল্ডের উপর ভিত্তি করে ডেটা গ্রুপ করা হয়েছে এবং প্রতিটি গ্রুপের সংখ্যা count গণনা করা হয়েছে।

3. $project - ডেটার ফিল্ড নির্বাচিত করা

$project অপারেটর MongoDB তে নির্বাচিত ফিল্ডগুলো প্রদর্শন করতে ব্যবহৃত হয়। আপনি শুধু যে ফিল্ডগুলো দেখতে চান তা নির্দিষ্ট করতে পারেন এবং বাকী ফিল্ডগুলো বাদ দিতে পারেন।

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.AggregateIterable;
import org.bson.Document;
import java.util.Arrays;

public class MongoDBProjectExample {
    public static void main(String[] args) {
        MongoClient mongoClient = new MongoClient("localhost", 27017);
        MongoDatabase database = mongoClient.getDatabase("myDatabase");
        MongoCollection<Document> collection = database.getCollection("users");

        // Project stage to show only 'name' and 'age' fields
        AggregateIterable<Document> result = collection.aggregate(Arrays.asList(
            new Document("$project", new Document("name", 1).append("age", 1))
        ));

        // Print the projected documents
        for (Document doc : result) {
            System.out.println(doc.toJson());
        }

        mongoClient.close();
    }
}

ব্যাখ্যা:

  • এখানে $project অপারেটর ব্যবহার করা হয়েছে, যাতে শুধুমাত্র name এবং age ফিল্ডগুলো দেখানো হয়।

4. $sort - ডেটা সাজানো

$sort অপারেটর MongoDB তে ডেটা সাজানোর জন্য ব্যবহৃত হয়। এটি ASC (ascending) বা DESC (descending) অর্ডারে সাজানো যায়।

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.AggregateIterable;
import org.bson.Document;
import java.util.Arrays;

public class MongoDBSortExample {
    public static void main(String[] args) {
        MongoClient mongoClient = new MongoClient("localhost", 27017);
        MongoDatabase database = mongoClient.getDatabase("myDatabase");
        MongoCollection<Document> collection = database.getCollection("users");

        // Sort stage to sort by 'age' in descending order
        AggregateIterable<Document> result = collection.aggregate(Arrays.asList(
            new Document("$sort", new Document("age", -1))  // -1 for descending order
        ));

        // Print the sorted documents
        for (Document doc : result) {
            System.out.println(doc.toJson());
        }

        mongoClient.close();
    }
}

ব্যাখ্যা:

  • এখানে $sort অপারেটর ব্যবহার করা হয়েছে, যাতে age ফিল্ড অনুযায়ী ডেটা ডেসেন্ডিং অর্ডারে সাজানো হয় (-1 denotes descending order)।

Aggregation Operators এর মিশ্রিত ব্যবহার:

MongoDB তে আপনি বিভিন্ন aggregation অপারেটর একসাথে ব্যবহার করতে পারেন। যেমন, আপনি $match, $group, $sort, এবং $project একসাথে ব্যবহার করে একটি জটিল কুয়েরি তৈরি করতে পারেন।

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.AggregateIterable;
import org.bson.Document;
import java.util.Arrays;

public class MongoDBComplexAggregationExample {
    public static void main(String[] args) {
        MongoClient mongoClient = new MongoClient("localhost", 27017);
        MongoDatabase database = mongoClient.getDatabase("myDatabase");
        MongoCollection<Document> collection = database.getCollection("users");

        // Complex aggregation pipeline with match, group, project, and sort
        AggregateIterable<Document> result = collection.aggregate(Arrays.asList(
            new Document("$match", new Document("age", new Document("$gt", 25))),  // Match age > 25
            new Document("$group", new Document("_id", "$age").append("count", new Document("$sum", 1))),  // Group by age
            new Document("$project", new Document("age", "$_id").append("userCount", "$count")),  // Project fields
            new Document("$sort", new Document("age", 1))  // Sort by age in ascending order
        ));

        // Print the aggregation result
        for (Document doc : result) {
            System.out.println(doc.toJson());
        }

        mongoClient.close();
    }
}

ব্যাখ্যা:

  • এই উদাহরণে $match, $group, $project, এবং $sort অপারেটরগুলি একত্রে ব্যবহৃত হয়েছে।
  • প্রথমে $match দ্বারা বয়সের উপর ফিল্টার করা হয়েছে, তারপর $group দ্বারা গ্রুপ করা হয়েছে, তারপর $project দ্বারা প্রয়োজনীয় ফিল্ডস প্রদর্শন করা হয়েছে এবং শেষমেশ $sort দ্বারা সাজানো হয়েছে।

MongoDB তে Aggregation Operators (যেমন $match, $group, $project, $sort) ডেটা প্রসেসিং এবং বিশ্লেষণ করার জন্য অত্যন্ত শক্তিশালী টুল। এগুলি ব্যবহার করে আপনি জটিল কুয়েরি তৈরি করতে পারেন, যেমন ডেটা ফিল্টারিং, গ্রুপিং, নির্বাচিত ফিল্ড প্রদর্শন এবং সাজানো। MongoDB এর Aggregation Framework অত্যন্ত কার্যকরী এবং দ্রুত পারফরম্যান্স প্রদান করে, যা বিভিন্ন ধরনের বিশ্লেষণ এবং ডেটা প্রসেসিং কার্যক্রমকে আরও সহজ করে তোলে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...